﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using FONCREAGROINTEGRAL.Models;

namespace FONCREAGROINTEGRAL.Controllers
{
    public class certificadorqController : Controller
    {
        public SistIntFoncreagroEntities entidades = new SistIntFoncreagroEntities();
        //
        // GET: /certificadorq/

        public ActionResult Index(int id)
        {
            int start = Convert.ToInt32(Request.QueryString["start"]);
            int limit = Convert.ToInt32(Request.QueryString["limit"]);

            string area = Convert.ToString(Request.QueryString["query"]);

            var query = entidades.CERTIFICADORQs
                .Where(a => a.IdPersonal == id);
            /*if (!String.IsNullOrEmpty(area))
            {
                query = query.Where(a => (a.Nombre).ToUpper().Contains(area.ToUpper()));
            }*/
            var result = (from crq in query.OrderByDescending(a => a.idcertificadorq).Skip(start).Take(limit).ToList()
                          //join em in entidades.EJERCICIOMES on a.idejerciciomes equals em.idejerciciomes
                          join eja in entidades.EJERCICIOs on crq.IdEjercicio equals eja.IdEjercicio
                          select new
                          {
                              Id = crq.idcertificadorq,
                              FechaInicio = string.Format("{0:d}", crq.fechainicio),
                              FechaFin = string.Format("{0:d}", crq.fechafin),
                              Estado = crq.estado,
                              Ingresos =  crq.ingresos,
                              RentasPagadas = crq.rqpagadas,
                              Ejercicio = eja.Anio,
                          }).ToList();

            return Json(new { grid = result, total = query.Count() }, JsonRequestBehavior.AllowGet);
        }

        //
        // GET: /certificadorq/Details/5

        public ActionResult Details(int id)
        {
            return View();
        }

        //
        // GET: /certificadorq/Create

        public ActionResult Create()
        {
            return View();
        } 

        //
        // POST: /certificadorq/Create

        [HttpPost]
        public ActionResult Create(FormCollection collection, CERTIFICADORQ CERTIFICADORQ)
        {
            try
            {
                var eja = entidades.EJERCICIOs.Single(ej => ej.EstadoP == true);
                // TODO: Add insert logic here
                if (ModelState.IsValid)
                {

                    var ccertificadorq = new CERTIFICADORQ();
                    ccertificadorq.estado = true;
                    ccertificadorq.IdEjercicio = Convert.ToInt32(eja.IdEjercicio);
                    TryUpdateModel(ccertificadorq, collection.ToValueProvider());
                    entidades.AddToCERTIFICADORQs(ccertificadorq);
                    entidades.SaveChanges();
                
                    try
                    {
                        //var eafiliacionsp = entidades.CERTIFICADORQs.Single(crq => crq.IdPersonal == ccertificadorq.IdPersonal &&
                        //crq.estado == true && crq.idcertificadorq != ccertificadorq.idcertificadorq);
                        //eafiliacionsp.estado = false;
                        //TryUpdateModel(eafiliacionsp);
                        //entidades.SaveChanges();
                        

                        DateTime mesfin = new DateTime();
                        mesfin = DateTime.Parse(ccertificadorq.fechafin.ToString());
                        entidades.RINGRESOCERTIFICADORQ(mesfin.Month, mesfin.Day);
                        entidades.RCALCULORETENCION(Convert.ToInt32(ccertificadorq.IdPersonal));
                        return Content("OK");
                    }
                    catch
                    {
                        entidades.RCALCULORETENCION(Convert.ToInt32(ccertificadorq.IdPersonal));
                        return Content("OK");
                    }

                    //return Content("OK");
                }
                else
                {
                    return View();
                }
            }
            catch
            {
                return View();
            }
        }
        
        //
        // GET: /certificadorq/Edit/5

        public ActionResult Edit(int id)
        {
            var ti = entidades.CERTIFICADORQs.Single(tia => tia.idcertificadorq == id);
            return View(ti);
        }

        //
        // POST: /tipoafiliacion/Edit/5

        [HttpPost]
        public ActionResult Edit(int id, FormCollection collection, CERTIFICADORQ CERTIFICADO)
        {
            var ta = entidades.CERTIFICADORQs.Single(tia => tia.idcertificadorq == id);
            try
            {

                if (ModelState.IsValid)
                {

                    TryUpdateModel(ta);
                    entidades.SaveChanges();
                    //entidades.RLLENAREJERCICIOMESPERSONA(78, 1);
                    entidades.RCALCULORETENCION(ta.IdPersonal);
                    return Content("OK");
                }

                //var eposicion = entidades.POSICIONPERSONAs.Single(pp => /*pp.IdPosicion == IdPosicion &&*/
                //    pp.idcontratoadendapersonal == 3698);
                //eposicion.IdPosicion = 108;
                //TryUpdateModel(eposicion);
                //entidades.SaveChanges();
                return View(ta);
            }
            catch
            {
                return View(ta);
            }
        }

        //
        // GET: /certificadorq/Delete/5
 
        public ActionResult Delete(int id)
        {
            return View();
        }

        //
        // POST: /certificadorq/Delete/5

        [HttpPost]
        public ActionResult Delete(int id, FormCollection collection)
        {
            string strResponse = null;
            var dcertificadorq = entidades.CERTIFICADORQs.Single(p => p.idcertificadorq == id);
            try
            {
                // TODO: Add delete logic here
                if (dcertificadorq != null)
                {
                    entidades.DeleteObject(dcertificadorq);
                    entidades.SaveChanges();
                    return Content("OK");
                    //return HttpNotFound();
                }
                return Content("Error");
            }
            catch (Exception e)
            {
                strResponse = "{success: false,msg:'" + e.Message + "'}";
                return Content(strResponse);
            }
        }
    }
}
